查看原文
其他

神器,代码画架构图,部署图,yyds

运维之大侠 大侠之运维 2023-07-22

点击上方蓝字  关注大侠之运维

最近在梳理内部一些系统的调用架构图,同时整理下运维这边涉及到的监控还有ELK的一些架构图,用一些架构图的软件虽然可以完成,但是显示上不太直观,最近在逛github的时候发现了一款可以用代码来画架构的神器,果断试用。

 

使用的话也比较简单,直接pip下载相关的包

pip install diagrams


参考文档:

https://diagrams.mingrammer.com/


https://github.com/mingrammer/diagrams


♦️

准备工作

在使用前

有个组件需要提前安装下,安装完后,需要添加环境变量

可以下载压缩包,解压后放到anaconda的路径下,路径可以参考下面:

https://graphviz.org/download/

 

 

♦️

上手

一个最简单单链路架构


直接提供了阿里云的一些组件,可以直接调用,其它云基本也是这些产品

所以可以直接用

from diagrams import Diagramfrom diagrams.alibabacloud.network import SLBfrom diagrams.alibabacloud.compute import ECSfrom diagrams.alibabacloud.web import Domain from diagrams.alibabacloud.web import Dnsfrom diagrams.onprem.network import Nginxfrom diagrams.onprem.compute import Serverfrom diagrams.alibabacloud.database import RDSwith Diagram("Web Service", show=False): Domain("domain") >> Dns("dns") >> SLB("SLB") >> Nginx("ng") >> Server("web") >> RDS("db")

 

下面介绍一个具体的例子,我这边的一个ELK的实际调用链路

 

我们可以先把这些组件画好

from diagrams import Cluster, Diagramfrom diagrams.elastic.elasticsearch import Beatsfrom diagrams.elastic.elasticsearch import Elasticsearchfrom diagrams.elastic.elasticsearch import Kibanafrom diagrams.elastic.elasticsearch import Logstashfrom diagrams.onprem.queue import Kafka



with Diagram("ELK-cluster", show=False): with Cluster("kafka Cluster"): kafka = [ Kafka("broker0"), Kafka("broker1"), Kafka("broker2")] with Cluster("elasticsearch Cluster"): es = [ Elasticsearch("node1"), Elasticsearch("node2"), Elasticsearch("node3")] agent = Beats("logging") logstash = Logstash("analytics") kibana = Kibana("kibana")


具体生成的图是这样的:

然后把这些组件整合起来

agent >> kafka >> logstash >> es >> kibana

最终生成的效果是这样的

 

接下来我们画一个整体的业务架构图,包含了业务组件、监控组件及日志收集组件

from diagrams import Cluster, Diagramfrom diagrams.alibabacloud.network import SLBfrom diagrams.alibabacloud.compute import ECSfrom diagrams.alibabacloud.web import Domain from diagrams.alibabacloud.web import Dnsfrom diagrams.onprem.network import Nginxfrom diagrams.onprem.compute import Serverfrom diagrams.alibabacloud.database import RDSfrom diagrams.elastic.elasticsearch import Beatsfrom diagrams.elastic.elasticsearch import Elasticsearchfrom diagrams.elastic.elasticsearch import Kibanafrom diagrams.elastic.elasticsearch import Logstashfrom diagrams.onprem.compute import Serverfrom diagrams.onprem.database import PostgreSQLfrom diagrams.onprem.inmemory import Redisfrom diagrams.onprem.monitoring import Grafana, Prometheus,PrometheusOperatorfrom diagrams.onprem.network import Nginxfrom diagrams.onprem.queue import Kafka

with Diagram("Advanced Web Service with On-Premise", show=False): domain = Domain("domain") dns = Dns("dns") ingress = Nginx("nginx")

metrics = PrometheusOperator("metric") metrics << Prometheus("prometheus") << Grafana("monitoring")

with Cluster("Service Cluster"): grpcsvc = [ Server("web1"), Server("web2"), Server("web3")]

with Cluster("Sessions HA"): primary = Redis("session") primary - Redis("replica") << metrics grpcsvc >> primary

with Cluster("Database HA"): primary = PostgreSQL("users") primary - PostgreSQL("replica") << metrics grpcsvc >> primary

aggregator = Beats("logging") aggregator >> Kafka("stream") >> Logstash("analytics") >> Elasticsearch("es") >> Kibana("kibana")

domain >> dns >> ingress >> grpcsvc >> aggregator

具体效果可以看下:



根据实际调整了下,实际监控还会对nginx和web服务进行监控

 

官网还有很多其它的组件,可以去尝试下,也有很多的示例可以去参考。



👆点击查看更多内容👆


推荐阅读

生产elasticsearch 8.0部署文档

elastalert2-ELK日志关键字监控实践

kubernetes安装参考这篇就好了!!


记得星标记一下,下次更容易找到我

       



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存